<?php
namespace Src\middleware;

use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Server\MiddlewareInterface as Middleware;
use Psr\Http\Server\RequestHandlerInterface as RequestHandler;

class SessionMiddleware implements Middleware
{
    public function process(Request $request, RequestHandler $handler): Response
    {
        // 启动 Session（若未启动）
        if (session_status() === PHP_SESSION_NONE) {
            // 配置Session参数（确保重启后数据不丢失）
            ini_set('session.cookie_httponly', 1);       // 防止JS读取
            // ini_set('session.cookie_secure', 0);         // 本地调试关闭HTTPS要求（生产环境设为1）
            ini_set('session.cookie_samesite', 'Lax');   // 防止CSRF
            ini_set('session.gc_maxlifetime', 86400);    // Session有效期24小时
            ini_set('session.cookie_lifetime', 0);       // 浏览器关闭后Cookie失效，但服务器端Session保留

            // 启动Session
            session_start();
        }

        // 继续处理请求
        return $handler->handle($request);
    }
}